﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using System.Linq;
namespace QuanLyKhachSan
{
    public partial class frmPhong : DevExpress.XtraEditors.XtraForm
    {
        DataClassesKhachSanDataContext db = new DataClassesKhachSanDataContext(SystemInfo .pub_ConnString );
        public bool Add = true;
        public int pid;
        public frmPhong()
        {
            InitializeComponent();
        }

        private void btLuu_Click(object sender, EventArgs e)
        {
            if (Add == true )
            { 
            if (testLoi())
            {
                
            
            try
            {
               
                    PHONG ph = new PHONG();
                    ph.P_MA = txtMaPhong.Text;
                    ph.LP_ID = int.Parse ( cbLoaiPhong.EditValue.ToString());
                    ph.TT_ID = int.Parse ( cbTrangThai.EditValue.ToString());
                    ph.CP_ID = int.Parse ( cbKickCo.EditValue.ToString());
                    ph.KV_ID = int.Parse ( cbKhuVuc.EditValue.ToString());
                    ph.P_GHI_CHU = txtGhiChu.Text;

                    db.PHONGs.InsertOnSubmit(ph);
                    db.SubmitChanges();

                      
                         lblThongBao.Visible = true;
                         lblThongBao.Text = "Đã thêm phòng: " + txtMaPhong .Text ;
                         timer1.Enabled = true;
                         timer1.Interval = 3000;

                         txtMaPhong.Text = "";
                         txtGhiChu.Text = "";
                         cbLoaiPhong.ItemIndex = 0;
                         cbKickCo.ItemIndex = 0;
                         cbTrangThai.ItemIndex = 0;
                }
               
            
            catch (Exception)
            {

                throw;
            }
            }
            }
            else
            { 
                if (int.Parse (cbTrangThai.EditValue.ToString ()) != 5 && int.Parse (cbTrangThai.EditValue.ToString ()) != 6)
                {
                try
                {
                    PHONG ph = db.PHONGs.Single(p => p.P_ID == pid);
                    ph.P_MA = txtMaPhong.Text;
                    ph.LP_ID = int.Parse(cbLoaiPhong.EditValue.ToString());

                    //kiem tra trang thai thue phòng

                    if (cbTrangThai.Text != "Đang Thuê")
                    {
                        ph.TT_ID = int.Parse(cbTrangThai.EditValue.ToString());
                    }
                    ph.CP_ID = int.Parse(cbKickCo.EditValue.ToString());
                    ph.KV_ID = int.Parse(cbKhuVuc.EditValue.ToString());
                    ph.P_GHI_CHU = txtGhiChu.Text;

                    db.SubmitChanges();

                    lblThongBao.Visible = true;
                    lblThongBao.Text = "Chỉnh sửa thông tin phòng: " + txtMaPhong.Text + " thành công.";
                    timer1.Enabled = true;
                    timer1.Interval = 3000;
                    this.Close();

                }
                catch (Exception)
                {
                    
                    throw;
                }
            }
                else
                {
                    if (cbTrangThai.Text == "Đang Thuê"  )
                    {
                        dxError.SetError(cbTrangThai, "Lỗi, Không được chọn trạng thái đang thuê cho phòng");     
                    }
                    else if (cbTrangThai.Text == "Đã Đặt")
                        {
                            dxError.SetError(cbTrangThai, "Lỗi, Không được chọn trạng thái đã đặt cho phòng");  
                    }
                    else
                    {
                        dxError.ClearErrors();
                    }
                }
            }
           // db.SubmitChanges();
        }

        private bool testLoi()
        {
            ///////////////////////////////
            //        kiem tra loi       // 
            // ////////////////////////////
            List<string> maphong = (from phong in db.PHONGs where phong.P_MA == txtMaPhong.Text select phong.P_MA).ToList();
            if (txtMaPhong.Text == "")
            {
                dxError.SetError(txtMaPhong, "Lỗi, Mã Phòng không được bỏ trống");
                return false;
            }
            else
            {
                dxError.ClearErrors();
 
            }
            if (maphong.Count >= 1)
            {
                dxError.SetError(txtMaPhong, "Lỗi, Mã Phòng đã được sử dụng");
                return false;
            }

            else
            {
                dxError.ClearErrors();
              
            }
            //kiem tra loai phong
            if (cbLoaiPhong.EditValue == null)
            {
                dxError.SetError(cbLoaiPhong, "Lỗi, Loại phòng chưa được chọn");
                return false;
            }

            else
            {
                dxError.ClearErrors();
               
            }

            //kiem tra trang thai
            if (cbTrangThai.EditValue == null)
            {
                dxError.SetError(cbTrangThai, "Lỗi, Trạng thái phòng chưa được chọn");
                return false;
            }
            else
            {
                dxError.ClearErrors();
               
            }

            if (cbTrangThai.Text == "Đang Thuê")
            {
                dxError.SetError(cbTrangThai, "Lỗi, Không được chọn trạng thái đang thuê cho phòng");
                return false;
            }
            else if (cbTrangThai.Text == "Đã Đặt")
            {
                dxError.SetError(cbTrangThai, "Lỗi, Không được chọn trạng thái đã đặt cho phòng");
                return false;
            }
            else
            {
                dxError.ClearErrors();

            }
            if (cbKickCo.EditValue == null)
            {
                dxError.SetError(cbKickCo, "Lỗi, Cỡ phòng chưa được chọn");
                return false;
            }
            else
            {
                dxError.ClearErrors();
               
            }
            return true;
        }


        private void frmPhong_Load(object sender, EventArgs e)
        {
            var loaiphong = from lp in db.LOAI_PHONGs select lp;
            cbLoaiPhong.Properties.DataSource = loaiphong;
            cbLoaiPhong.Properties.DisplayMember = "LP_LOAI";
            cbLoaiPhong.Properties.ValueMember = "LP_ID";
           
           

            var khuvuc = from kv in db.KHU_VUCs select kv;
            cbKhuVuc.Properties.DataSource = khuvuc;
            cbKhuVuc.Properties.DisplayMember = "KV_TEN";
            cbKhuVuc.Properties.ValueMember = "KV_ID";
            //cbLoaiPhong.ItemIndex = 0;

            var kichco = from kc in db.CO_PHONGs select kc;
            cbKickCo.Properties.DataSource = kichco;
            cbKickCo.Properties.DisplayMember = "CP_CO";
            cbKickCo.Properties.ValueMember = "CP_ID";
         

            var trangthai = from tt in db.TRANG_THAI_PHONGs select tt  ;
            cbTrangThai.Properties.DataSource = trangthai;
            cbTrangThai.Properties.DisplayMember = "TT_PHONG";
            cbTrangThai.Properties.ValueMember = "TT_ID";

            if (Add == true)
            {
                cbLoaiPhong.ItemIndex = 0;
                cbTrangThai.ItemIndex = 0;
                cbKickCo.ItemIndex = 0;
            }
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            lblThongBao.Visible = false;
            timer1.Enabled = false;
        }

        private void frmPhong_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (this.load_form != null)
                this.load_form(sender, e);
        }
        public event EventHandler load_form;
     
      
      

        
    }
}